home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / envCPP31 / c++ / rexx / debug.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2002-01-01  |  6.4 KB  |  279 lines

  1. /* rexx macro */
  2.  
  3. options results                             /* enable return codes     */
  4.  
  5. if (left(address(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  6.  
  7.     address 'GOLDED.1'
  8.  
  9. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  10.  
  11. if (RC ~= 0) then
  12.  
  13.     exit
  14.  
  15. options failat 6                            /* ignore warnings         */
  16.  
  17. signal on syntax                            /* ensure clean exit       */
  18.  
  19. /* ------------------------- INSERT YOUR CODE HERE: -------------------- */
  20.  
  21. /* INPUT: SOFTWARE/K,MODE/K,COMMAND/K
  22.  
  23.    SOFTWARE/K: SAS/C,SAS/C-GNUMAKE,VBCC,DICE,DICE-GNUMAKE,STORMC,GENERIC
  24.  
  25.    MODE/K: CLI/S,WB/S
  26. */
  27.  
  28. parse upper arg SOFTWARE MODE .
  29.  
  30. if (SOFTWARE = "") then
  31.  
  32.     SOFTWARE = "GENERIC"
  33.  
  34. if (MODE = "") then
  35.  
  36.     MODE = "CLI"
  37.  
  38. 'QUERY CAT'
  39.  
  40. if (RESULT = "deutsch") then do
  41.  
  42.     STRING.sSELECTPROGRAM = "Programm auswählen"
  43.     STRING.sFILENOTFOUND  = "Programm nicht gefunden:"
  44.     STRING.sUNSUPPORTED   = "Diese Funktion wird von der aktuellen|C/C++-Umgebung nicht unterstützt !"
  45.     STRING.sARGS          = "Argumente für den Programmstart:"
  46. end
  47. else do
  48.  
  49.     STRING.sSELECTPROGRAM = "Choose program"
  50.     STRING.sFILENOTFOUND  = "Program not found:"
  51.     STRING.sUNSUPPORTED   = "This function is not supported|by the current C/C++ mode !"
  52.     STRING.sARGS          = "Arguments for starting the program:"
  53. end
  54.  
  55. if ((SOFTWARE ~= "SAS/C") & (SOFTWARE ~= "SAS/C-GNUMAKE") & (SOFTWARE ~= "GCC")) then do
  56.  
  57.     'REQUEST PROBLEM="' || STRING.sUNSUPPORTED || '"'
  58. end
  59. else do
  60.  
  61.     'QUERY PATH VAR=PATH'
  62.  
  63.     R = pragma('D', PATH)
  64.  
  65.     /* locate program */
  66.  
  67.     call getprojectname(SOFTWARE)
  68.  
  69.     if (PROJECTNAME = "") then
  70.  
  71.         'REQUEST FILE TITLE="' || STRING.sSELECTPROGRAM || '" PATH="' || PATH || '" VAR=PROJECTNAME'
  72.  
  73.     if (PROJECTNAME ~= "") then do
  74.  
  75.         if (exists(PROJECTNAME)) then do
  76.  
  77.             /* get arguments for running program */
  78.  
  79.             ARGS = ""
  80.  
  81.             if (MODE ~= "WB") then do
  82.  
  83.                 'REQUEST STRING BODY="' || STRING.sARGS || '" VAR=ARGS'
  84.  
  85.                 if (RC ~= 0) then do
  86.  
  87.                     'UNLOCK'
  88.  
  89.                     exit
  90.                 end
  91.             end
  92.  
  93.             if ((SOFTWARE = "SAS/C") | (SOFTWARE = "SAS/C-GNUMAKE")) then
  94.  
  95.                 COMMANDLINE = 'cpr -. -screen "Workbench" -' || MODE || ' ' || PROJECTNAME || ' ' || ARGS
  96.  
  97.             if (SOFTWARE = "GCC") then do
  98.  
  99.                 COMMANDLINE = 'gdb ' || PROJECTNAME || ' ' || ARGS
  100.  
  101.                 STACKSIZE = 65535
  102.             end
  103.             else
  104.                 STACKSIZE = 16384
  105.  
  106.             'FIX VAR=COMMANDLINE'
  107.  
  108.             'RUN ASYNC CMD="' || COMMANDLINE || '" DIR="' || PATH || '" STACK=' || STACKSIZE
  109.         end
  110.         else
  111.             'REQUEST PROBLEM="' || STRING.sFILENOTFOUND || ' «' || PROJECTNAME || '»' || '"'
  112.     end
  113. end
  114.  
  115. /* ---------------------------- END OF YOUR CODE ----------------------- */
  116.  
  117. 'UNLOCK' /* VERY important: unlock GUI */
  118. EXIT
  119.  
  120. SYNTAX:
  121.  
  122. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  123. 'UNLOCK'
  124. EXIT
  125.  
  126. /* /// "getprojectname" */
  127.  
  128. getprojectname: procedure expose CONFIG. STRING. PROJECTNAME OBJFOLDER
  129.  
  130.     parse upper arg SOFTWARE
  131.  
  132.     /* try to read project name from options file or makefile */
  133.  
  134.     PROJECTNAME = ""
  135.     OBJFOLDER   = ""
  136.  
  137.     call readoptions(SOFTWARE)
  138.  
  139.     if (PROJECTNAME = "") then do
  140.  
  141.         call readmakefile(SOFTWARE)
  142.  
  143.         if (PROJECTNAME = "") then do
  144.  
  145.             if (SOFTWARE ~= "") then do
  146.  
  147.                 /* try again but ignore specified compiler */
  148.  
  149.                 call readoptions("")
  150.  
  151.                 if (PROJECTNAME = "") then
  152.  
  153.                     call readmakefile("")
  154.             end
  155.         end
  156.     end
  157.  
  158.     return
  159.  
  160. /* /// */
  161. /* /// "readoptions" */
  162.  
  163. readoptions: procedure expose CONFIG. STRING. PROJECTNAME OBJFOLDER GSTFILE
  164.  
  165.     /* read compiler-specific options file in project folder (if any exists) */
  166.  
  167.     parse upper arg SOFTWARE
  168.  
  169.     if ((SOFTWARE = "") | (SOFTWARE = "SAS/C") | (SOFTWARE = "SAS/C-GNUMAKE")) then do
  170.  
  171.         if (exists("scoptions")) then do
  172.  
  173.             if open('HANDLE', "scoptions", 'READ') then do
  174.  
  175.                 do until eof('HANDLE')
  176.  
  177.                     DATA = readln('HANDLE')
  178.  
  179.                     if (upper(left(DATA, 12)) = "PROGRAMNAME=") then do
  180.  
  181.                         PROJECTNAME = compress(substr(DATA, 13), '"')
  182.                     end
  183.                     else if (left(DATA, 11) = "OBJECTNAME=") then
  184.  
  185.                         OBJFOLDER = compress(substr(DATA, 12), '"')
  186.  
  187.                     else if (left(DATA, 18) = "GLOBALSYMBOLTABLE=") then
  188.  
  189.                         GSTFILE = compress(substr(DATA, 19), '"')
  190.                 end
  191.  
  192.                 R = close('HANDLE')
  193.             end
  194.         end
  195.     end
  196.  
  197.     return
  198.  
  199. /* /// */
  200. /* /// "readmakefile" */
  201.  
  202. readmakefile: procedure expose CONFIG. STRING. PROJECTNAME
  203.  
  204.     parse upper arg SOFTWARE
  205.  
  206.     /* locate makefile */
  207.  
  208.     MAKEFILE = ""
  209.  
  210.     if ((SOFTWARE = "") | ((SOFTWARE ~= "SAS/C") & (SOFTWARE ~= "DICE"))) then do
  211.  
  212.         if (exists("makefile")) then
  213.  
  214.             MAKEFILE = "makefile"
  215.     end
  216.  
  217.     if (MAKEFILE = "") then do
  218.  
  219.         if ((SOFTWARE = "") | (SOFTWARE = "SAS/C")) then do
  220.  
  221.             if (exists("smakefile")) then
  222.  
  223.                 MAKEFILE = "smakefile"
  224.         end
  225.  
  226.         if (MAKEFILE = "") then do
  227.  
  228.             if ((SOFTWARE = "") | (SOFTWARE = "DICE")) then do
  229.  
  230.                 if (exists("dmakefile")) then
  231.  
  232.                     MAKEFILE = "dmakefile"
  233.             end
  234.         end
  235.     end
  236.  
  237.     /* try to locate executable name in makefile */
  238.  
  239.     if (MAKEFILE ~= "") then do
  240.  
  241.         if (open('HANDLE', MAKEFILE, 'READ') ~= 0) then do
  242.  
  243.             POS = 0
  244.  
  245.             do until (eof('HANDLE') | (PROJECTNAME ~= ""))
  246.  
  247.                 DATA = readln('HANDLE')
  248.  
  249.                 if (MAKEFILE = "smakefile") then do
  250.  
  251.                     if (pos("sc link to", DATA) ~= 0) then do
  252.  
  253.                         parse var DATA with 'sc' 'link' 'to' '"' PROJECTNAME '"' .
  254.  
  255.                         if (PROJECTNAME = "") then
  256.  
  257.                             parse var DATA with 'sc' 'link' 'to' PROJECTNAME .
  258.                     end
  259.                 end
  260.                 else if (left(DATA, 3) = "EXE") then do
  261.  
  262.                     parse var DATA with 'EXE' '=' '"' PROJECTNAME '"'.
  263.  
  264.                     if (PROJECTNAME = "") then
  265.  
  266.                         parse var DATA with 'EXE' '=' PROJECTNAME .
  267.                 end
  268.             end
  269.  
  270.             R = close('HANDLE')
  271.  
  272.             PROJECTNAME = compress(PROJECTNAME, '"')
  273.         end
  274.     end
  275.  
  276.     return
  277.  
  278. /* /// */
  279.